给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

请必须使用时间复杂度为 O(log n) 的算法。

示例 1:

输入: nums = [1,3,5,6], target = 5
输出: 2
1
2

示例 2:

输入: nums = [1,3,5,6], target = 2
输出: 1
1
2

示例 3:

输入: nums = [1,3,5,6], target = 7
输出: 4
1
2

代码

var searchInsert = function(nums, target) {
    // for(let i = 0; i < nums.length; i++){
    //     if(nums[i] === target){
    //         return i;
    //     } else {
    //         nums.push(target);
    //         nums.sort((a, b) => { return a - b});
    //         return nums.indexOf(target);
    //     }
    // }
    const n = nums.length;
    let left = 0, right = n - 1, ans = n;
    while (left <= right) {
        let mid = ((right - left) >> 1) + left;
        if (target <= nums[mid]) {
            ans = mid;
            right = mid - 1;
        } else {
            left = mid + 1;
        }
    }
    return ans;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
最后更新时间: 6/20/2022, 10:48:50 PM